%% Author: OSEA
%% Created: 2011 9 11
%% Description: TODO: Add description to echo
-module(echo).
-author('OSEA member Sharavsambuu').
-export([listen/1]).
-define(TCP_OPTIONS,[binary,{packet,0},{active,false},{reuseaddr,true}]).

% echo:listen(Port) гэж дуудаж сэрвэрийг эхлүүлнэ
listen(Port) ->
	{ok, LSocket} = gen_tcp:listen(Port, ?TCP_OPTIONS),
	accept(LSocket).

% орж ирэх холболтуудыг хүлээгээд холболт орж ирвэл
% echo явуулдаг циклийг эхлүүлнэ
accept(LSocket) ->
	{ok, Socket} = gen_tcp:accept(LSocket),
	spawn(fun() ->loop(Socket) end),
	accept(LSocket).

% socket-ээс ирсэн мэдээллийг буцааж явуулна
loop(Socket) ->
	case gen_tcp:recv(Socket, 0) of
		{ok, Data} ->
			io:format("received : ~w~n",[Data]),
			gen_tcp:send(Socket, Data),
			loop(Socket);
		{error, closed} ->
			ok
	end.

